package com.zmn.oms.services.interfaces.order;

import com.zmn.oms.model.dto.order.OrderDTO;
import com.zmn.oms.model.entity.order.Order;

import java.util.Map;
import java.util.Set;

/**
 * 类描述：订单
 *
 * @author liuying
 * @date 2018/11/06 11:40
 */
public interface OrderService {

    /**
     * 通过订单Id获取信息
     *
     * @param orderId 订单id
     * @return 订单信息
     */
    Order findOrderByKey(Long orderId);

    /**
     * 通过订单Id获取信息
     *
     * @param orderId 订单id
     * @return 订单信息
     */
    Order findOrderByKeySrcMaster(Long orderId);

    /**
     * 更新已确认状态
     *
     * @param order
     */
    void updateConfirmStatus(Order order);

    /**
     * 更新已领单或者已上门状态
     *
     * @param order
     * @param fields 需要更新的属性 totalAmount、depositAmount
     */
    void updateTakeOrVisitStatus(Order order, Map<String, Boolean> fields);

    /**
     * 修改订单
     *
     * @param order
     * @return
     */
    void updateOrderByKey(Order order);

    /**
     * 修改订单
     *
     * @param orderDTO 订单
     * @return
     */
    void updateOrder(OrderDTO orderDTO);

    /**
     * 同步修改订单
     * @param order
     */
    void updateSyncOrder(Order order);

    /**
     * 新增订单和订单产品
     *
     * @param orderDTO 订单
     * @return
     */
    Long insertOrderAndProduct(OrderDTO orderDTO);


    /**
     * 修改订单地址
     *
     * @param orderDTO 订单
     * @return
     */
    void updateOrderAddress(OrderDTO orderDTO);

}
